import axios from 'axios'
import router from "@/route/index";
import { useIndexStore } from "@/store/path";
export function request(config) {
    const instance = axios.create({
        baseURL: 'https://tc.z550.cn/',
        // baseURL: 'http://127.0.0.2/',
        timeout: 50000
    })

    // 请求拦截器保持不变
    instance.interceptors.request.use(config => {
        // 从 sessionStorage 获取 token（优先使用持久化存储）
        const token = sessionStorage.getItem('token');

        // 如果 token 存在，注入 Authorization 请求头
        if (token) {
            config.headers.Authorization = `Bearer ${token}`;
        }
        if (config.method?.toLowerCase() === 'post') {
            config.headers['Content-Type'] = 'application/json';
            if (typeof config.data !== 'string' && !(config.data instanceof FormData)) {
                config.data = JSON.stringify(config.data);
            }
        }
        return config
    }, err => {
        console.log('请求拦截err:', err);
        return Promise.reject(err)
    })

    // 调整响应拦截器错误处理逻辑
    instance.interceptors.response.use(
        res => {
            if (res.data.code == 403) {
                const indexStore = useIndexStore();
                console.log("Token无效,请重新登录");
                indexStore.$patch({ token: null });
                sessionStorage.removeItem("token");
                setTimeout(() => {
                    router.replace({ name: 'login' });
                }, 1500);
            }
            return res.data
        },
        err => {
            console.log('响应拦截err:', err);

            // 网络无响应（如跨域、超时等）
            if (!err.response) {
                console.log('网络错误，请检查网络连接');
                return Promise.reject(err);
            }

            const { status, data } = err.response;


            // Token 异常处理（状态码和code均为403）
            if (status === 401 || status === 403) {
                console.log('登录状态已过期，跳转到登录页');
                // 实际项目中建议使用前端路由跳转（需引入router）
                // router.replace('/login');
                router.replace({ name: 'login' }); // 简单示例
                return Promise.reject(new Error('Token expired'));
            }

            // 其他HTTP错误状态，抛出异常由具体页面处理
            return Promise.reject(err);
        }
    )

    return instance(config)
}